home *** CD-ROM | disk | FTP | other *** search
/ PC Gamer (Italian) 30 / PC Gamer IT CD 30 1-2.iso / MOTS / GAMEDATA / RESOURCE / JKMRES.GOO / cog_weap_seqcharge_m.cog < prev    next >
Text File  |  1998-02-25  |  7KB  |  262 lines

  1. # Jedi Knight Missions Cog Script
  2. #
  3. # WEAP_SEQCHARGE_M.COG
  4. #
  5. # WEAPON 8 Script - Sequencer Charge
  6. #
  7. # Heartier than the Thermals and the DF IM Mines these are used by placing them on
  8. #  the ground or on walls.  These have both delayed and proximity options.
  9. #
  10. # - Not affected by MagSealed sectors/surfaces.
  11. #
  12. # [YB & CYW] + [RF]
  13. #
  14. # (C) 1997 LucasArts Entertainment Co. All Rights Reserved
  15. # ========================================================================================
  16.  
  17. symbols
  18.  
  19. model       povModel=seqb.3do             local
  20. model       povModel_m=seqb_m.3do         local
  21. model       weaponMesh=seqg.3do           local
  22.  
  23. # Animations that deal with bringing stuff up
  24. keyframe    mountAnim=SeqBmntr.key        local
  25.  
  26.  
  27. # Animations that deal with bringing stuff down
  28. keyframe    dismountAnim=SeqbDisr.key     local
  29.  
  30. # Charge laying animations
  31. keyframe    povFireAnim=SeqBpstR.key      local
  32. keyframe    povFire2Anim=SeqBpstR.key     local
  33.  
  34.  
  35. flex        mountWait                     local
  36. flex        fireWait=0.8                  local
  37. flex        holsterWait                   local
  38.  
  39. template    projectile_tpl=+seqchrg       local
  40. template    projectile_tpl2=+seqchrg2     local
  41. template    projectile_tpl3=+seqchrg3     local
  42. template    projectile_tpl4=+seqchrg4     local
  43.  
  44. template        projectileB=+dudseqchrg            local
  45.  
  46. keyframe    holsterAnim=kyhlstr.key       local
  47.  
  48.  
  49.     # The next 10 items actually function
  50.     # as an array of lain projectiles.
  51. int         projectile                    local
  52.  
  53. int         iCounter                      local
  54. material    flashing=seq0mtp3.mat         local
  55. int         cel                           local
  56. int         mode                          local
  57.  
  58. thing       player                        local
  59. int         trackID=-1                    local
  60. int         holsterTrack                  local
  61.  
  62. int         selectMode=1                  local
  63.  
  64. message     startup
  65. message     activated
  66. message     deactivated
  67. message     selected
  68. message     deselected
  69. message     autoselect
  70. message     fire
  71. message     timer
  72.  
  73. end
  74.  
  75. # ========================================================================================
  76.  
  77. code
  78.  
  79. startup:
  80.    // Setup delays and variables.
  81.    mountWait    = GetKeyLen(mountAnim);
  82.  
  83.    // Start the material flashing.
  84.    MaterialAnim( flashing, 4, 1 );
  85.  
  86.    Return;
  87.  
  88. # ........................................................................................
  89.  
  90. fire:
  91.    player = GetSourceRef();
  92.    mode = GetSenderRef();
  93.  
  94.    // Check that the player is still alive.
  95.    if(GetThingHealth(player) <= 0)
  96.    {
  97.       Return;
  98.    }
  99.  
  100.     SendMessageEx(GetThingClassCog(GetLocalPlayerThing()), user1, 3, 0, 0, 0);
  101.  
  102.     if (GetInv(player, 93) > 0.0)
  103.         projectile = FireProjectile(player, projectileB, -1, 16, '0 0.05 0.00', '0 0 0', 1.0, 0, 0.0, 0.0);
  104.     else
  105.         projectile = FireProjectile(player, projectile_tpl[mode], -1, 16, '0 0.05 0.00', '0 0 0', 1.0, 0, 0.0, 0.0);
  106.  
  107.     if (GetSenderID() == 2)
  108.     {
  109.         StopKey(player, holsterTrack, 0.0);
  110.     }
  111.     else
  112.    jkPlayPOVKey(player, povfireAnim, 1, 0x38);
  113.  
  114.    ChangeInv(player, GetWeaponBin(8), -1.0);
  115.  
  116.     // If out of ammo try to autoswitch to another weapon
  117.     // if autoswitch is enabled else just switch to fists.
  118.     if(GetInv(player, GetWeaponBin(8)) < 1)
  119.     {
  120.             // If the manual sequencer has no charges down and we are out of
  121.             // charges, do not allow it to be selected.
  122.         if (GetInv(player, GetWeaponBin(18)) == 1.0)
  123.             SetInv(player, GetWeaponBin(18), 0.0);
  124.  
  125.         if(GetAutoSwitch() & 1)
  126.         {
  127.          SelectWeapon(player, GetWeaponBin(AutoSelectWeapon(player, 1)));
  128.         }
  129.         else
  130.         {
  131.             SelectWeapon(player, 1);
  132.         }
  133.     }
  134.  
  135.    Return;
  136.  
  137. # ........................................................................................
  138.  
  139. activated:
  140.    player = GetSourceRef();
  141.    mode = GetSenderRef();
  142.  
  143.     if (GetInv(player, 93) > 0.0)
  144.         SendMessageEx(GetThingClassCog(player), skill, 1100, 0, 0, 0);
  145.  
  146.    if(mode > 1) Return;
  147.  
  148.     jkSetWaggle(player, '0.0 0.0 0.0', 0);
  149.     ActivateWeapon( player, fireWait, mode );
  150.  
  151.    Return;
  152.  
  153. # ........................................................................................
  154.  
  155. deactivated:
  156.    player = GetSourceRef();
  157.    mode = GetSenderRef();
  158.  
  159.    jkSetWaggle(player, '10.0 7.0 0.0', 350);
  160.     DeactivateWeapon( player, mode );
  161.    Return;
  162.  
  163. # ........................................................................................
  164.  
  165. selected:
  166.    player = GetSourceRef();
  167.  
  168.     jkPrintUNIString(player, 374); // "Automatic Mode"
  169.  
  170.    PlayMode(player, 40);
  171.     if (GetInv(player, 67) == 0.0)
  172.         jkSetPOVModel(player, povModel);        // Kyle hand
  173.     else
  174.         jkSetPOVModel(player, povModel_m);    // Mara Hand
  175.    SetArmedMode(player, 0);
  176.    jkSetWeaponMesh(player, weaponMesh);
  177.    trackID = jkPlayPOVKey(player, mountAnim, 0, 20);
  178.  
  179.    jkSetWaggle(player, '10.0 7.0 0.0', 350);
  180.  
  181.    SetMountWait(player, GetKeyLen(mountAnim));
  182.    jkClearFlags(player, 0x5);
  183.    SetCurWeapon(player, GetWeaponBin(8));
  184.  
  185.    Return;
  186.  
  187. # ........................................................................................
  188.  
  189. deselected:
  190.    player = GetSourceRef();
  191.  
  192.    jkPlayPOVKey(player, dismountAnim, 0, 18);
  193.  
  194.    holsterWait = GetKeyLen(holsterAnim);
  195.    SetMountWait(player, holsterWait);
  196.    holsterTrack = PlayKey(player, holsterAnim, 1, 0x4);
  197.    SetTimerEx(holsterWait, 2, 0.0, 0.0);
  198.    if (trackID != -1)
  199.    {
  200.       jkStopPOVKey(player, trackID, 0);
  201.       trackID = -1;
  202.    }
  203.    jkSetWaggle(player, '0.0 0.0 0.0', 0);
  204.    Return;
  205.  
  206. # ........................................................................................
  207.  
  208. autoselect:
  209.    selectMode = GetSenderRef();
  210.    player = GetSourceRef();
  211.  
  212.    // If the player has ammo
  213.    if(GetInv(player, GetWeaponBin(8)) != 0)
  214.    {
  215.       // query for ammo
  216.       if(selectMode == -1)
  217.       {
  218.          ReturnEx(300.0);
  219.          Return;
  220.       }
  221.  
  222.       if((selectMode == 0) && !(GetAutoPickup() & 2))
  223.       {
  224.          ReturnEx(300.0);
  225.          Return;
  226.       }
  227.  
  228.       if((selectMode == 1) && !(GetAutoSwitch() & 2))
  229.       {
  230.          ReturnEx(300.0);
  231.          Return;
  232.       }
  233.  
  234.       if((selectMode == 2) && !(GetAutoPickup() & 2))
  235.       {
  236.          ReturnEx(300.0);
  237.          Return;
  238.       }
  239.  
  240.       ReturnEx(-2.0);
  241.       Return;
  242.  
  243.    }
  244.    else
  245.    {
  246.       ReturnEx(-1.0);
  247.    }
  248.  
  249.    Return;
  250.  
  251. # ........................................................................................
  252.  
  253. timer:
  254.     if (GetSenderID() == 2)
  255.     {
  256.         StopKey(player, holsterTrack, 0.0);
  257.     }
  258.  
  259.    Return;
  260.  
  261. end
  262.